連結リスト Linked list 連想配列 辞書 object
? 辞書と連結リストは違うのでは?
どこかで混じった?
名前をキーにアクセスできる配列
連結リスト
ポインタ pointerを使って前後のメモリ Memoryの位置でアクセス
メモリ上の連続の場所に格納される必要なし
ここのデータをプロパティといったり
関数が格納されたプロパティのことをメソッド Method
線形リスト linear list
循環リスト circular list
配列 Arrayとの比較
search 探索
ランダムな読み取りが遅いO(n)
insert 挿入,delete 削除
要素の追加、削除が高速O(1)
ポインタ pointerを変えるだけ
メモリ上に連続したスロットは必要なく、要素分の空きスロットがあればいい。
アクセス方法
ドット記法
シンプルなもの、簡単に書きたいもの
ブラケット記法
変数でアクセスしたい
prototype 汚染になる脆弱性 vulnerabilityあり
code:object.js
const languages ={ ja:'日本語', en:'英語' };
// ドット演算子でアクセス
console.log(languages.ja); // => '日本語'
//ブラケット構文によるアクセス
console.log(languages['en'); //=> '英語'
//変数でアクセス
const myLang = "日本語"
console.log(languagesmyLang) // => '日本語'
メソッドなど
分割代入 Destructuring assignment
code:dest.js
const obj = {"apple":1,"orange":2};
const {apple,orange}=obj
console.log(apple,orange); // 1 2
Destructuring assignment - JavaScript | MDN
繰り返し処理 forEach
for inは非推奨
code:forIn.js
const obj ={"apple":1,"orange":2}
Object.keys(obj).forEach(key)=> {
const value = objkey;
console.log(key:${key},value:${value})
}
Solidityでは、 mapping マッピング
【初心者向け】Solidityにおけるmappingの使い方を解説! – Blockchain Code Magazine